package droid.mapViewer;

import droid.mapViewer.primitives.PrimitiveFactory;

import android.content.Context;
import android.opengl.GLSurfaceView;
import android.view.MotionEvent;
import android.app.Activity;

public class OpenGLSceneView extends GLSurfaceView {
	private OpenGLSceneRenderer renderer;
	
	private float lastX; 
	private float lastY; // координаты последнего события
	

	public OpenGLSceneView(Context context, String fileName) {
		super(context);
		try {
			setEGLConfigChooser(8, 8, 8, 8, 16, 8);	//WTF??? Выбор конфигурации Stencil-буфера. РАЗНАЯ на разных устройствах! :(
			PrimitiveFactory primitives = new PrimitiveFactory(fileName); 
			renderer = new OpenGLSceneRenderer();
			renderer.setPrimitives(primitives.getPrimitives());
			setRenderer(renderer);
			((Activity)context).setResult(Activity.RESULT_OK, ((Activity)context).getIntent());
		} catch (Exception e) {
			((Activity)context).finish();
		} 
	}
	
	/**
	 * Обработчик касаний
	 * @see android.view.View#onTouchEvent(android.view.MotionEvent)
	 *@Override
	 */
	public boolean onTouchEvent(final MotionEvent event) {
		switch (event.getAction()) {
			case MotionEvent.ACTION_DOWN: // нажатие на экран
				renderer.setColor(event.getX() / getWidth(), event.getY() / getHeight(), 1.0f);
				lastX=event.getX();
				lastY=event.getY();
            break;
			case MotionEvent.ACTION_MOVE: //движение по экрану
				renderer.move(event.getX() - lastX, event.getY() - lastY);
	        break;
			case MotionEvent.ACTION_UP: // отжатие
				renderer.savePos(event.getX() - lastX, event.getY() - lastY);
            break;
	        case MotionEvent.ACTION_OUTSIDE: 
            break;
	        default:
	            return false; // событие не обработано
		}
        return true;	// событие обработано
	}
}
